Objetivo: Ferramentas para análise de qualidade, performance, complexidade, segurança e estilo em projetos Python.
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| Radon | radon cc . -a |
Calcula complexidade ciclomática, Halstead metrics e índice de manutenibilidade. |
| Xenon | xenon . --max-absolute B --max-modules A |
Extensão do Radon, enforce limites de complexidade (CI/CD friendly). |
| Wily | wily build . && wily report |
Mede evolução da complexidade com base no histórico do Git. |
| Lizard | lizard . |
Análise rápida de complexidade e tamanho de funções. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| Flake8 | flake8 . |
Verifica erros de estilo e más práticas (PEP8). |
| Pylint | pylint my_module.py |
Avalia qualidade geral do código com pontuação de 0–10. |
| Ruff | ruff check . |
Linter moderno, muito rápido; substitui flake8 + isort + parte do mypy. |
| Bandit | bandit -r . |
Detecta falhas de segurança em código Python. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| Mypy | mypy . |
Verifica tipos estáticos usando type hints (PEP484). |
| Pyright | pyright |
Alternativa rápida para análise de tipos (VSCode usa internamente). |
| Deal | decorators @pre, @post, @inv |
Implementa Design by Contract (pré/pós-condições). |
| Typeguard | @typechecked |
Faz checagem de tipos em runtime. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| cProfile | python -m cProfile -o output.prof script.py |
Profiler padrão de CPU. |
| pstats | python -m pstats output.prof |
Analisa resultados do cProfile. |
| line_profiler / lineviz | kernprof -l script.py && python -m line_profiler script.py.lprof |
Mede tempo por linha de código. |
| memory_profiler | python -m memory_profiler script.py |
Mede uso de memória por linha. |
| py-spy | py-spy top --pid <PID> |
Profiler externo, ideal para produção. |
| scalene | scalene script.py |
Perfil CPU + memória + tempo por linha com visualização colorida. |
| perf | python -m perf timeit 'code' |
Benchmarks precisos e reprodutíveis. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| Pytest | pytest |
Framework de testes mais usado e extensível. |
| Coverage.py | coverage run -m pytest && coverage report |
Mede cobertura de código. |
| pytest-cov | pytest --cov=package_name |
Integra pytest + coverage. |
| Mutmut | mutmut run |
Faz mutation testing, testa robustez dos testes. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| pip-audit | pip-audit |
Detecta vulnerabilidades (CVE) em dependências. |
| Safety | safety check |
Verifica dependências inseguras. |
| Deptry | deptry . |
Detecta dependências não usadas ou faltando. |
| pip-check-reqs | pip-missing-reqs . |
Valida se requirements.txt está correto. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| Black | black . |
Formata código automaticamente (PEP8). |
| Isort | isort . |
Ordena imports de forma consistente. |
| Docformatter | docformatter -r . |
Formata docstrings (PEP257). |
| Pre-commit | pre-commit install |
Executa linters e formatadores antes de commits. |
| Ferramenta | Comando principal | Descrição |
|---|---|---|
| Vulture | vulture . |
Encontra código morto (funções/imports não usados). |
| Pydeps | pydeps my_package |
Gera gráfico de dependências entre módulos. |
| Code2Flow | code2flow my_module.py |
Gera diagrama de fluxo de execução. |
| SonarQube | CI/CD integration | Análise avançada de qualidade e dívida técnica. |
# Instalação
pip install black ruff mypy pytest pytest-cov radon scalene
# Fluxo recomendado
black . # Formata código
ruff check . # Lint e estilo
mypy . # Tipagem estática
radon cc . -a # Complexidade ciclomática
pytest --cov # Testes + cobertura
scalene main.py # Profiling detalhado